package com.zhongfeng.api.modules.front.service;

import com.zhongfeng.api.modules.end.vo.params.EndParams;
import com.zhongfeng.api.modules.front.vo.NumberVo;
import com.zhongfeng.api.modules.front.vo.params.FrontParams;
import com.zhongfeng.api.modules.utils.pojo.Result;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * @author blueCat
 * @date 2023/2/2 14:01
 * @motto life is a gift
 */
public interface FrontService {
    /**
     * 查询全部上游信息
     * @param params
     * @return
     */
    Result queryAllFront(FrontParams params);

    /**
     * 查询全部上游IP
     * @param frontIdList
     * @return
     */
    List<String> queryAllFrontIp(List<Integer> frontIdList);

    /**
     * 新增上游信息
     * @param params
     * @return
     */
    Result addFront(FrontParams params);

    /**
     * 删除上游信息
     * @param id
     * @return
     */
    Result deleteFront(Integer id);

    /**
     * 修改上游信息
     * @param params
     * @return
     */
    Result updateFront(FrontParams params);

    /**
     * 查询全部A路号码
     * @param params
     * @return
     */
    Result queryAllNumber(FrontParams params);

    /**
     * 查询上游属性
     * @return
     */
    Result queryFrontProperty();

    /**
     * 查询落地分布
     * @param params
     * @return
     */
    Result queryFrontDistribution(FrontParams params);

    /**
     * 下载A号码
     * @param params
     * @param resp
     */
    void downloadFile(FrontParams params, HttpServletResponse resp) throws IOException;

    /**
     * 对接修改A号码
     * @param params
     * @return
     */
    Result updateNumber(FrontParams params);

    /**
     * 对接自动分配号码
     * @param params
     * @return
     */
    Result autoUpdateNumber(FrontParams params);

    /**
     * 查询全部落地分组
     * @return
     */
    List<Integer> queryFrontGroup();

    /**
     * 导入A号码
     * @param params
     * @return
     */
    Result importNumber(FrontParams params);

    /**
     * 新增A号码（新增并发）
     * @param params
     * @return
     */
    Result addNumber(FrontParams params);
}
